import { listWarehouseNoPage } from '@/api/wms/warehouse';
import { listMerchantNoPage } from "@/api/wms/merchant";
import { listItemCategory, treeSelectItemCategory } from "@/api/wms/itemCategory";
import { listItemBrand } from "@/api/wms/itemBrand";
import {defineStore} from "pinia";
import {ref} from "vue";

export const useWmsStore = defineStore('wms', () => {

  // 仓库管理
  const warehouseList = ref([]);
  const warehouseMap = ref(new Map());

  const getWarehouseList = () => {
    listWarehouseNoPage({}).then((res) => {
      warehouseList.value =  [
              {
                id: 190000000,
                warehouseName: '苏州园区'
              },
              {
                id: 190000001,
                warehouseName: '常熟冷链仓'
              },
              {
                id: 190000002,
                warehouseName: '吴江仓'
              }
            ];
      const map = new Map();
      warehouseList.value.forEach((supplier) => {
        map.set(supplier.id, supplier);
      });
      warehouseMap.value = map;
    });
  };

  // 企业管理
  const merchantList = ref([]);
  const merchantMap = ref(new Map());

  const getMerchantList = () => {
    listMerchantNoPage({}).then((res) => {
      merchantList.value = [
        {
          id: 180000000,
          merchantName: '苏州XXXXXXX仓储管理有限公司',
          merchantCode:'c_0001',
          merchantType: 1
        },
        {
          id: 180000001,
          merchantName: '苏州XXXXX供应链有限公司',
          merchantCode:'s_0001',
          merchantType: 2
        },
        {
          id: 180000002,
          merchantName: '苏州CS有限公司',
          merchantCode:'c_s_0001',
          merchantType: 3
        }
      ];
      const map = new Map();
      merchantList.value.forEach((supplier) => {
        map.set(supplier.id, supplier);
      });
      merchantMap.value = map;
    });
  }

  // 商品分类管理
  // const itemCategoryList = ref([])
  // const itemCategoryTreeList = ref([])
  // const itemCategoryMap = ref(new Map())

  // const getItemCategoryList = () => {
  //   return new Promise((resolve, reject) => {
  //     listItemCategory({}).then(res => {
  //       itemCategoryList.value = [
  //         {
  //           id: 170000000,
  //           parent_id: 0,
  //           category_name:'手机',
  //           order_num: 0,
  //           status:1
  //         },
  //         {
  //           id: 170000001,
  //           parent_id: 0,
  //           category_name:'打印机',
  //           order_num: 1,
  //           status:1
  //         },
  //         {
  //           id: 170000002,
  //           parent_id: 0,
  //           category_name:'电脑',
  //           order_num: 3,
  //           status:1
  //         },
  //         {
  //           id: 170000003,
  //           parent_id: 0,
  //           category_name:'家电',
  //           order_num: 4,
  //           status:1
  //         },
  //         {
  //           id: 170000004,
  //           parent_id: 170000003,
  //           category_name:'冰箱',
  //           order_num: 0,
  //           status:1
  //         },
  //         {
  //           id: 170000005,
  //           parent_id: 170000003,
  //           category_name:'电视',
  //           order_num: 1,
  //           status:1
  //         },
  //         {
  //           id: 170000006,
  //           parent_id: 0,
  //           category_name:'健生器材',
  //           order_num: 5,
  //           status:1
  //         },
  //         {
  //           id: 170000007,
  //           parent_id: 0,
  //           category_name:'生鲜',
  //           order_num: 6,
  //           status:1
  //         },
  //         {
  //           id: 170000008,
  //           parent_id: 170000007,
  //           category_name:'水果',
  //           order_num: 0,
  //           status:1
  //         },
  //         {
  //           id: 170000009,
  //           parent_id: 170000007,
  //           category_name:'海鲜',
  //           order_num: 1,
  //           status:1
  //         },
  //         {
  //           id: 170000010,
  //           parent_id: 170000007,
  //           category_name:'空调',
  //           order_num: 2,
  //           status:1
  //         },
  //       ];
  //       const map = new Map()
  //       itemCategoryList.value.forEach(supplier => {
  //         map.set(supplier.id, supplier)
  //       })
  //       itemCategoryMap.value = map
  //       resolve()
  //     }).catch(() => reject())
  //   })
  // }

  // const getItemCategoryTreeList = async () => {
  //   return new Promise((resolve, reject) => {
  //     treeSelectItemCategory().then(res => {
  //       itemCategoryTreeList.value = res.data
  //       resolve(res.data)
  //     }).catch(() => reject())
  //   })
  // }

   // 商品分类管理
   const itemCategoryList = ref([])
   const itemCategoryTreeList = ref([])
   const itemCategoryMap = ref(new Map())
 
   const getItemCategoryList = () => {
     return new Promise((resolve, reject) => {
       listItemCategory({}).then(res => {
         itemCategoryList.value = res.data;
         const map = new Map()
         itemCategoryList.value.forEach(supplier => {
           map.set(supplier.id, supplier)
         })
         itemCategoryMap.value = map
         resolve()
       }).catch(() => reject())
     })
   }
 
   const getItemCategoryTreeList = async () => {
     return new Promise((resolve, reject) => {
       treeSelectItemCategory().then(res => {
         itemCategoryTreeList.value = res.data
         resolve(res.data)
       }).catch(() => reject())
     })
   }

  // 商品品牌管理
  const itemBrandList = ref([])
  const itemBrandMap = ref(new Map())

  const getItemBrandList =  () => {
    return new Promise((resolve, reject) => {
      listItemBrand({}).then(res => {
        itemBrandList.value = [
          {
            id: 30000000,
            brandName: '小米'
          },
          {
            id: 30000001,
            brandName: '苹果'
          },
          {
            id: 30000002,
            brandName: '华为'
          },
          {
            id: 30000003,
            brandName: '爱普生'
          },
          {
            id: 30000004,
            brandName: '惠普'
          }
        ];
        const map = new Map()
        itemBrandList.value.forEach(supplier => {
          map.set(supplier.id, {...supplier})
        })
        itemBrandMap.value = map
        resolve()
      }).catch(() => reject())
    })
  }

  return {
    // 仓库管理
    warehouseList,
    warehouseMap,
    getWarehouseList,
    // 企业管理
    merchantList,
    merchantMap,
    getMerchantList,
    // 商品分类管理
    itemCategoryList,
    itemCategoryTreeList,
    itemCategoryMap,
    getItemCategoryList,
    getItemCategoryTreeList,
    // 商品品牌管理
    itemBrandList,
    itemBrandMap,
    getItemBrandList
  };
});
